标签: elasticsearch-net

喜欢在Elasticsearch中搜索

我正在使用elasticsearch来过滤和搜索json文件,我是这项技术的新手.所以我有点困惑如何在elasticsearch中编写类似查询.

select * from table_name where 'field_name' like 'a%'
Run Code Online (Sandbox Code Playgroud)

这是mysql查询.如何在Elasticsearch中编写此查询?我使用的是elasticsearch版本0.90.7.

php java elasticsearch elasticsearch-plugin elasticsearch-net

15
推荐指数
1
解决办法
3万
查看次数

如何使用python脚本检查elasticsearch中是否存在索引并对其执行异常处理?

如何使用python查询检查索引是否存在?

我将我的索引作为在查询外部分配的变量传递为: -

 i=int(datetime.datetime.now().strftime('%d'))+1
indextring="index"
for m in range (i-10,i):
    d = datetime.datetime(2016, 10, m, 18, 00).strftime('%Y-%m-%d')
    index1=datestring+d
    subfix="_"+datetime.datetime(2016, 10, m, 18, 00).strftime('%Y-%m-%d')
    es=Elasticsearch(['localhost:9200'])
    res = **es.search(index='{0}'.format(index1)**, doc_type="log",size=10000, from_=0, body={ "query": {
    "match": {
     ....Match condition follows
      }
    }
  }})
Run Code Online (Sandbox Code Playgroud)

现在,某些索引在特定日期不存在,但我希望该过程无论如何都要运行.当索引不存在时,我收到以下错误 - >

elasticsearch.exceptions.NotFoundError:TransportError(404,u'index_not_found_exception')

我不确定异常处理在elasticsearch中是如何工作的.

python elasticsearch elasticsearch-plugin elasticsearch-net elasticsearch-2.0

10
推荐指数
1
解决办法
1万
查看次数

Json.Net 中的“当前错误上下文错误与请求的错误不同”异常

语境

我用 C# 编写了一个并行作业框架,用于从 ElasticSearch 集群导入/导出大量数据。为此,我将单个项目的每个导入或导出建模为一个对象,该对象由框架在某个时刻执行。为了与 ElasticSearch 交互,我使用 NEST(官方 .NET ElasticSearch 客户端库)v1.7.1 和 JSON.Net 7.0.1。

每个导入/导出任务对象都使用 NEST 与 ElasticSearch 交互。出于性能原因,我编写了一个代理类,它将任务对象生成的搜索请求分组为固定大小的批次,以便与 NEST 的 _msearch API 一起使用。此类的调用者将被延迟,直到其批处理返回。该课程可以在这里找到

我的框架将每个导入/导出任务的结果包装为“bool”或“Exception”。即使遇到个别项目的错误,整个过程也能够继续。

问题

在几个小时的任务完成且没有错误的情况下,我发现以下异常出现了数千次:

System.InvalidOperationException: Current error context error is different to requested error.
    at _____.Matcher.<GetBestMatchAsync>d__15.MoveNext() in C:\\_work\\edc7a363\\_____\\Matcher.cs:line 266
    --- End of stack trace from previous location where exception was thrown ---
    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
    at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
    _____.MatchBlock`1.<ExecuteAsyncInternal>d__19.MoveNext() in C:\\_work\\edc7a363\\_____\\MatchBlock.cs:line 111
    --- End of stack trace from previous location where exception …
Run Code Online (Sandbox Code Playgroud)

c# multithreading json.net nest elasticsearch-net

9
推荐指数
1
解决办法
4570
查看次数

如何将MSSQL同步到Elasticsearch?

每当我谷歌这个,我发现不推荐使用的"河流"方法.如果这是一个有用的信息,我正在使用Dapper.

那么这几天的解决方案是什么?

c# sql-server-2008 dapper nest elasticsearch-net

9
推荐指数
1
解决办法
7625
查看次数

How to have different log types using Serilog and ElasticSearch

I am currently trying to change our system configuration to work with Serilog (instead of working with FileBeat as a shipper to LogStash)

We are also working with the log type field (which is easy to configure in the FileBeat config file) in our various queries and for indexing out logs on Elastic.

The problem is that when using Serilog we get the default type logevent, and I didn't find where I can configure it. I want …

c# elasticsearch serilog elasticsearch-net

8
推荐指数
1
解决办法
7102
查看次数

使用NEST批量插入ElasticSearch

我尝试向elasticsearch添加100k产品,但是当我尝试获取时:{"验证失败:1:没有添加请求;"}

我的代码:

        var Node = new Uri("......");
        var ConnectionPool = new SniffingConnectionPool(new[] { Node });
        var Config = new ConnectionConfiguration(ConnectionPool)
                    .SniffOnConnectionFault(false)
                    .SniffOnStartup(false)
                    .SniffLifeSpan(TimeSpan.FromMinutes(10));
        var Client = new ElasticsearchClient(Config);

        var AllProducts = Product.GetProducts();
        var SPl = AllProducts.Split(100); // Split into 100 collections/requests

        var COll = new List<ElasticsearchResponse<DynamicDictionary>>();

        foreach (var I in SPl)
        {
            var Descriptor = new BulkDescriptor();

            foreach (var Product in I)
            {
                Descriptor.Index<Product>(op => op.Document(Product));
            }

            COll.Add(Client.Bulk(Descriptor));
        }
Run Code Online (Sandbox Code Playgroud)

AllProducts包含此对象的列表:

public class Product
{
 public int AffiliateNr { get; set; …
Run Code Online (Sandbox Code Playgroud)

c# elasticsearch nest elasticsearch-net

7
推荐指数
1
解决办法
8887
查看次数

在没有时间的情况下在ElasticSearch中搜索日期字段值

我的数据中有一个日期字段

"type": "date",
"format": "dateOptionalTime"
Run Code Online (Sandbox Code Playgroud)

现在我的日期字段和值是 -

"INITIAL_EXTRACT_DATE" : "2015-04-02T06:47:57.78+05:30"
Run Code Online (Sandbox Code Playgroud)

在搜索时我只根据"2015-04-02"的日期进行搜索.但我得到0结果.

任何人都可以建议如何搜索确切的日期,是任何日期.

现在我正在尝试这个 -

确切日期 -

"term": {
          "IH_PT_DSC": {
             "value": "2015-04-02"
          }
       }
Run Code Online (Sandbox Code Playgroud)

对于任何日期 -

"terms": {
         "IH_PT_DSC": [
            "2015-04-02",
            "2015-04-03",
            "2015-04-03"
         ]
      }
Run Code Online (Sandbox Code Playgroud)

elasticsearch elasticsearch-net

6
推荐指数
1
解决办法
5418
查看次数

使用弹性搜索客户端发布原始json

我已升级到ElasticSearch.Net/Nest 2.0.2,我不能再使用低级客户端方法(connector.GetClient().Raw.Bulk()).我查看了文档,但我似乎找不到任何显示如何使用新版本发布原始json来索引新文档.

nest elasticsearch-net

6
推荐指数
1
解决办法
3279
查看次数

Elasticsearch.Net 和超时

我有一个 4 节点的 elasticsearch 集群。我有一个 .net 控制台应用程序,旨在用来自 sql 的数据填充集群。只要我将添加(或删除)记录的速度保持在相当低的水平,一切都可以正常工作。如果我最终增加线程数,我会在控制台应用程序中看到超时错误。该集群共有 48 个内核,索引一条记录所需的平均时间约为 0.1 秒。

我已经能够让它每秒处理大约 7000 条记录(文档)。我从来没有看到从 elasticsearch.net 抛出的任何表明资源不足的异常。我从未看到任何索引队列超载。服务器的 CPU 峰值永远不会超过 10%。看起来问题不是集群或其配置,而是嵌套连接中的问题。这是我的连接代码:

//set up the es client
Uri node = new    Uri(ConfigurationManager.AppSettings["ESConnectionString"]);
var connectionPool = new SniffingConnectionPool(new[] { node });
ConnectionSettings settings = new ConnectionSettings(connectionPool);
settings.SetDefaultPropertyNameInferrer(p => p); //ditch the camelcase
settings.SniffOnConnectionFault(true);
settings.SniffOnStartup(true);
settings.SniffLifeSpan(TimeSpan.FromMinutes(1));
settings.SetPingTimeout(3000);
settings.SetTimeout(5000);
settings.MaximumRetries(5);
//settings.SetMaximumAsyncConnections(20);
settings.SetDefaultIndex("dummyindex");
settings.SetBasicAuthentication(ConfigurationManager.AppSettings["ESUser"], ConfigurationManager.AppSettings["ESPass"]);
ElasticClient client = new ElasticClient(settings);
Run Code Online (Sandbox Code Playgroud)

我使用 http.basic 身份验证设置了集群,但我尝试打开和关闭它,但没有任何区别。以下是来自 ES 节点的一些相关设置:

discovery.zen.minimum_master_nodes: 2
discovery.zen.fd.ping_timeout: 30s
discovery.zen.ping.multicast.enabled: false
discovery.zen.ping.unicast.hosts: ["CACHE01","CACHE02","CACHE03","CACHE04"]
cluster.routing.allocation.node_concurrent_recoveries: 5 …
Run Code Online (Sandbox Code Playgroud)

timeout elasticsearch nest elasticsearch-net

5
推荐指数
0
解决办法
3587
查看次数

使用对象初始值设定项语法构建动态查询

我正在使用 Nest 来查询 Elasticsearch,并且我已经为我的搜索编写了以下查询:

var searchResponse = _elasticClient.Search<AdDocument>(s => s
    .Query(q => q
       .Bool(b => b
          .Must(m => m
             .MultiMatch(mm => mm
                .Fields(f => f.Field(p => p.Title, 1.5).Field(p => p.Description))
                .Query("MyKeyword")
                .Fuzziness(Fuzziness.Auto)
             )
       )
       .Filter(fi => fi
          .Bool(fb => fb
             .Must(m => m.Range(r => r.Field(f => f.NoOfBedrooms == 3)),
                   m => m.Range(r => r.Field(f => f.NoOfBathrooms == 2)),
                   m => m.Range(r => r.Field(f => f.Price > 2000))
             )
          )
       )
    )
  )
);
Run Code Online (Sandbox Code Playgroud)

我想要实现的是根据传入的过滤器动态构建此查询。如何使用Object Initializer编写此查询?

例如,我想在查询外部创建这三个范围过滤器,并将它们放入 3 个对象中,例如 …

elasticsearch nest elasticsearch-net

5
推荐指数
1
解决办法
1296
查看次数