连接到localhost上运行的solr服务器

时间:2015-10-26 00:16:52

标签: python solr connection server localhost

我正在尝试使用solr教程连接到this服务器。此时,我确信我的solr设置正确。我能够运行

> solr start -p 8983

它似乎开始了。

果然

> solr status
Solr process 31421 running on port 8983

所以现在在我的python代码中,我尝试了我认为应该是一个基本的连接脚本。

import solr
host = "http://localhost:8983/solr"

# also tried
# host = "http://localhost:8983"

# also tried
# host = "http://127.0.0.1:8983/solr"

# also tried
# host = "http://127.0.0.1:8983"

connection = solr.SolrConnection(host)

try:
    connection.add(
        id= 1,
        title= "Lucene in Action",
        author= ['Zack', 'Hank Hill']
    )
except Exception as e:
    import pdb
    pdb.set_trace()

connection.commit()

我的代码永远不会进入connection.commit(),而是会遇到异常中的调试点。看异常e

HTTP code=404, Reason=Not Found, body=<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    <title>Error 404 Not Found</title>
</head>
<body><h2>HTTP ERROR 404</h2>
    <p>Problem accessing /solr/update. Reason:
    <pre>    Not Found</pre></p><hr><i><small>Powered by Jetty://</small></i><hr/>
</body>
</html>

因为404,所以看起来python客户端没有找到solr服务器?这看起来应该很简单,所以我不确定我在哪里搞砸了。谁能指出我正确的方向?

编辑:我添加了这个脚本来检查各种主机,没有去

hosts = [
    'http://localhost:8983/solr',
    'http://localhost:8983',
    'http://127.0.0.1:8983/solr',
    'http://127.0.0.1:8983'
]

def connect(host):
    connection = solr.SolrConnection(host)
    try:
        connection.add(
            id= 1,
            title='Lucene in Action',
            author= ['Zack Botkin', 'Hank Hill']
        )
    except:
        raise

for host in hosts:
    try:
        connect(host)
    except Exception as e:
        import pdb
        pdb.set_trace()

每个异常都是相同的,404错误

编辑2:我能够

> telnet localhost 8983

它已连接,所以我非常确定solr服务器是在该端口上运行的吗?

1 个答案:

答案 0 :(得分:4)

要使用solr进行索引,您还需要创建一个核心,并确保在您的网址中使用该核心。例如,一旦启动solr,运行此命令以创建名为test的核心:

solr create -c test

创建完成后,您应该会在solr管理页面中看到它。要使用它,您只需将该核心名称添加到您的连接URL即可。简单示例python代码:

import solr

# create a connection to a solr server
s = solr.SolrConnection('http://localhost:8983/solr/test')

# add 2 documents to the index
s.add(id=1, title='Lucene in Action', author=['bob', 'asdf'])
s.add(id=2, title='test2', author=['Joe', 'test'])
s.commit()

# do a search
response = s.query('joe')
for hit in response.results:
    print hit['title']

此处提供更多信息https://cwiki.apache.org/confluence/display/solr/Running+Solr